package vh.sphynx.runtime;

public interface VariableStorage {

	public static Object EMPTY = new Object() {
		public String toString() { return "EMPTY"; };
	};
	
	public static int VARIABLE = 0;
	public static int ARGUMENT = 1;
	public static int READONLY = 2;
	public static int CUSTOM = 3;
	public static int UNUSED_ARGUMENT = 4;

	public static final Object UNEVALUATED = new Object() {
		public String toString() { return "unevaludated"; };
	};
		
	Object getValue();
	Object setValue(Object value);
	
	boolean isWritable();
	boolean isGlobal();
	boolean isEmpty();
	
	void setWritable(boolean writable);
	
	int getVariableType();
	
}
